#include <iostream>
#include <set>
#include <vector>

using namespace std;

vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
	vector<int> v;
	if (k < 1 || input.size() < k)
		return v;
	if (input.size() <= k)
		return input;
	set<int> kMin;
	for (int i = 0; i < input.size(); ++i)
	{
		if (kMin.size() < k)
			kMin.insert(input[i]);
		else if(*(--kMin.end()) > input[i])
		{
			kMin.erase(--kMin.end());
			kMin.insert(input[i]);
		}
	}
	
	v.insert(v.begin(), kMin.begin(), kMin.end());
	return v;
}

//int main()
//{
//	/*set<int> s;
//	s.insert(3);
//	s.insert(1);
//
//	cout << *(--s.end()) << endl;*/
//
//	vector<int> ve = { 4, 5, 1, 6, 2, 7, 3, 8 };
//	vector<int> v = GetLeastNumbers_Solution(ve, 4);
//
//	for (auto i : v)
//		cout << i << endl;
//
//	system("pause");
//	return 0;
//}